/***********************************************************************
 * Module:  ITempletContainer.java
 * Author:  juny
 * Created: 2006年7月14日 9:33:01
 * Purpose: Defines the Interface ITempletContainer
 ***********************************************************************/

package com.powerunion.datacollection.report.excelreport.base;

import java.util.*;


import jxl.Range;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
/**
 * 报表模板容器接口：报表模板容器用来包含报表模板元素,
 * 如字段模板定义，计算域字段模板定义等等。
 * @author juny
 * @since 1.0
 */
public interface ITempletContainer
{
   /**
    * 取得容器包含的模板元素
    * @return
    */
   public abstract List getContainElements();
   
   /** 
     * 取得指定模板元素
     * @param name 模板元素名称 */
   public abstract BaseElement getElement(String name);
   
   /** 
    * 添加一个元素到模板容器中 
    */
   public void addElement(BaseElement element, int col, int row);
   
   /**
    * 设置容器的开始行和列
    * @param beginCol
    * @param beginRow
    */
   public void setBegin(int beginCol, int beginRow);
   
   /**
    * 设置容器的结束行和列
    * @param endCol
    * @param endRow
    */
   public void setEnd(int endCol, int endRow);
   
   /**
    * 添加容器包含的合并单元格信息
    * @param range
    * @return
    */
   public boolean addMergedCell(Range range);
   
   /**
    * 取得当前模板容器对象中包含的合并单元格信息。
    * @return
    */
   public List getMergedCells();
   
   /**
    * 添加一个图片对象到当前模板容器中。
    * @param image
    * @return
    */
   public boolean addImage(WritableImage image);
   
   /**
    * 移除容器中的所有模板图片对象。
    * @return
    */
   public boolean removeAllTempletImages(WritableSheet sheet);
   
   /**
    * 取得当前模板容器中包含的图像列表
    * @return
    */
   public List getImages();
   
   /**
    * 
    * @param param
    * @return
    * @throws Exception
    */
   public boolean write(Parameter param) throws Exception;

   /** 
     * 取得指定位置的模板元素
     * @param col 
     * @param row 
     */
   public abstract BaseElement getElement(int col, int row);
   
   /**
    * 取得模板开始列。该函数暂时可能没有用。
    * @return
    */
   public abstract int getBeginCol();
   
   /**
    * 取得模板对应开始行
    * @return
    */
   public abstract int getBeginRow();
   
   /**
    * 取得模板结束列 ，该函数暂时也没有用
    * @return
    */
   public abstract int getEndCol();
   
   /**
    * 取得模板结束行
    * @return
    */
   public abstract int getEndRow();

}